/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package be.hogent.iii.project.guigameroom;


import be.hogent.iii.project.guigameroom.testdata.Resultaat;
import be.hogent.iii.project.guigameroom.testdata.Speler;
import be.hogent.iii.project.guigameroom.testdata.Wedstrijd;
import java.awt.Color;
import java.awt.Dimension;
import java.util.ArrayList;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;

/**
 *
 * @author jef donders
 */
public class InfoGamePanel extends JPanel {

    private Dimension size;
    private JTable table;
    private ArrayList<Wedstrijd> wedstrijden;
    private DataStorage testDb;
    private JScrollPane wedstrijdDetail;
    
    public InfoGamePanel(Dimension size) {
        this.size = size;
        //this.setOpaque(false);
        Speler testSpeler = new Speler(5);
        testSpeler.setNick("josken_ruled");
        testSpeler.setLosscount(5);
        testSpeler.setWincount(10);
        
        testDb = new DataStorage();
        
        wedstrijdDetail = new JScrollPane();
        
        //setInhoudSpeler("donderz");
        
    
    }

    public void setInhoudSpeler(String nickname) {

        this.removeAll();
        this.size = size;
        //this.setOpaque(false);
        
        
        Speler speler = testDb.geefSpeler(nickname);
        wedstrijden = testDb.getOverzichtWedstrijden(nickname);
        
        JLabel labelNaam = new JLabel("naam: " + speler.getNick());
        JLabel labelWins = new JLabel("aantal wins: " + speler.getWincount());
        JLabel labelLosses = new JLabel("aantal losses: " + speler.getLosscount());
        JLabel labelOverzicht = new JLabel("Overzicht Wedstrijden:");

        Dimension labelNaamGrootte = new Dimension(size.width/3 -5,size.height/12 -5);
        Dimension labelWinsGrootte = new Dimension (size.width/3 -5 , size.height/12 -5);
        Dimension labelLossesGrootte = new Dimension (size.width/3 -5 , size.height/12 -5);
        Dimension labelOverzichtGrootte = new Dimension (size.width/3 -5 , size.height/12 -5);
        Dimension wedstrijdenScrollPaneGrootte = new Dimension(size.width  , 2*size.height/3 -25);
        
        JScrollPane wedstrijdenScrollPane = new JScrollPane(maakWedstrijdenTable(wedstrijdenScrollPaneGrootte, wedstrijden));
        wedstrijdenScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        
        wedstrijdDetail = new JScrollPane();
        
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
       
        //wedstrijdScrollPane.add(new JLabel("test"));//maakWedstrijdenPanel(wedstrijdScrollPaneGrootte, wedstrijden));
        
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                //.addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                    .addComponent(wedstrijdenScrollPane, javax.swing.GroupLayout.Alignment.LEADING, wedstrijdenScrollPaneGrootte.width, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(labelNaam, labelNaamGrootte.width, labelNaamGrootte.width, labelNaamGrootte.width)
                            .addComponent(labelWins, labelWinsGrootte.width, labelWinsGrootte.width, labelWinsGrootte.width)
                            .addComponent(labelLosses, labelLossesGrootte.width, labelLossesGrootte.width, labelLossesGrootte.width)
                            .addComponent(labelOverzicht, labelOverzichtGrootte.width, labelOverzichtGrootte.width, labelOverzichtGrootte.width))
                        .addGap(40, 40, 40)
                        .addComponent(wedstrijdDetail, javax.swing.GroupLayout.PREFERRED_SIZE, 242, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(35, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(wedstrijdDetail, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(labelNaam, labelNaamGrootte.height, labelNaamGrootte.height, labelNaamGrootte.height)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(labelWins, labelWinsGrootte.height, labelWinsGrootte.height, labelWinsGrootte.height)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(labelLosses, labelLossesGrootte.height, labelLossesGrootte.height, labelLossesGrootte.height)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(labelOverzicht, labelOverzichtGrootte.height, labelOverzichtGrootte.height, labelOverzichtGrootte.height)))
                .addGap(18, 18, 18)
                .addComponent(wedstrijdenScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, wedstrijdenScrollPaneGrootte.height, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(30, Short.MAX_VALUE))
        );
    }
    
    private JTable maakWedstrijdenTable(Dimension grootte, ArrayList<Wedstrijd> wedstrijden){
        //JPanel wedstrijdOverzicht = new JPanel();
        table = new JTable(new WedstrijdOverzichtTableModel(wedstrijden));
        ListSelectionModel listSelectionModel = table.getSelectionModel();
        listSelectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        listSelectionModel.addListSelectionListener(new WedstrijdOverzichtSelectedListener(this));
	table.setSelectionModel(listSelectionModel);
       
        return table;
    }
    
    public void setWedstrijdDetail (){
        System.out.println("" + table.getSelectedRow());
        int battleId = wedstrijden.get(table.getSelectedRow()).getBattleId();
        Resultaat resultaat = testDb.getOverzichtWedstrijd(battleId);
        String [] hoofding = {"winnaars", "verliezers"};
        
        int aantal = resultaat.getVerliezers().size();
        if (resultaat.getWinnaars().size() > aantal)
            aantal = resultaat.getWinnaars().size();
        String [][] data = new String[aantal][2];
        for (int i=0;i<aantal;i++){
            if (i < resultaat.getWinnaars().size())
                data[i][0] = resultaat.getWinnaars().get(i);
            else
                data[i][0] = "";
        
            if (i < resultaat.getVerliezers().size())
                data[i][1] = resultaat.getVerliezers().get(i);
            else
                data[i][1] = "";
        }
        JTable tableWedstrijdResultaat = new JTable(data, hoofding);
        wedstrijdDetail.setViewportView(tableWedstrijdResultaat);
    }
}
